package com.litong.litongjiaoyu.service.impl;

import com.litong.litongjiaoyu.dao.SysWhochatwithwhomDao;
import com.litong.litongjiaoyu.entity.SysWhochatwithwhom;
import com.litong.litongjiaoyu.service.SysWhochatwithwhomService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * (SysWhochatwithwhom)表服务实现类
 *
 * @author jingzepei
 * @since 2020-06-02 09:36:44
 */
@Service("sysWhochatwithwhomService")
public class SysWhochatwithwhomServiceImpl implements SysWhochatwithwhomService {
    @Resource
    private SysWhochatwithwhomDao sysWhochatwithwhomDao;
    
    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     *
     * @return 实例对象
     */
    @Override
    public SysWhochatwithwhom queryById(String id) {
        return this.sysWhochatwithwhomDao.queryById(id);
    }
    
    /**
     * 查询所有行数据
     *
     * @return 对象列表
     */
    @Override
    public List<SysWhochatwithwhom> queryAll() {
        
        String[] names = null;
        
        List<SysWhochatwithwhom> whochatwithwhoms = this.sysWhochatwithwhomDao.queryAll();
        
        for (SysWhochatwithwhom whochatwithwhom : whochatwithwhoms) {
            //将经过处理的名字存入数组并放入对象中，便于前台使用
            names = this.format(whochatwithwhom.getWhoandwho());
            
            whochatwithwhom.setShowName0(names[0]);
            whochatwithwhom.setShowName1(names[1]);
        }
        
        return whochatwithwhoms;
    }
    
    /**
     * 查询是否存在该聊天记录
     *
     * @param name 发送者和接受者
     *
     * @return 空或者记录id
     */
    @Override
    public String presence(String name) {
        
        return this.sysWhochatwithwhomDao.presence(name);
    }
    
    /**
     * 新增数据
     *
     * @param sysWhochatwithwhom 实例对象
     *
     * @return 实例对象
     */
    @Override
    public boolean insert(SysWhochatwithwhom sysWhochatwithwhom) {
        
        return this.sysWhochatwithwhomDao.insert(sysWhochatwithwhom) > 1;
    }
    
    
    /**
     * 通过主键删除数据
     *
     * @param id 主键
     *
     * @return 是否成功
     */
    @Override
    public boolean deleteById(String id) {
        return this.sysWhochatwithwhomDao.deleteById(id) > 0;
    }
    
    
    /**
     * 将字符串转化为字符串数组，并按照字典的顺序排序
     *
     * @param name 要整理的内容
     *
     * @return 整理后的字符串数组
     */
    public String[] format(String name) {
        synchronized (name) {
            //去除字符串内大部分空白字符， 不限于空格
            name = name.replace("\\s*", "");
            
            //根据 “ , ” 分割字符串
            String[] names = name.split(",");
            
            Arrays.sort(names);
            
            return names;
        }
    }
}